package com.menker.app.common;

import android.content.Context;
import android.text.TextUtils;

//import com.facebook.stetho.Stetho;
import com.github.sahasbhop.apngview.ApngImageLoader;
import com.jude.utils.JUtils;
import com.menker.app.BuildConfig;
import com.menker.app.di.Injector;
import com.mob.MobApplication;
//import com.squareup.leakcanary.LeakCanary;
//import com.squareup.leakcanary.RefWatcher;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

import timber.log.Timber;

/**
 * @author J.Huang
 * @version 1.0
 */

public class BaseApp extends MobApplication {
//    public RefWatcher refWatcher;

    @Override
    public void onCreate() {
        super.onCreate();

        // 初始化DI依赖注入框架Dagger2
        // 务必先初始化AppComponent
        Injector.initMyAppComponent(this);

        ApngImageLoader.getInstance().init(getApplicationContext());

        initApplication();
    }

//    public static RefWatcher getRefWatcher(Context context) {
//        BaseApp application = (BaseApp) context.getApplicationContext();
//        return application.refWatcher;
//    }

    /**
     * 获取进程名字
     *
     * @return
     */
    public String getProcessName() {
        try {
            File file = new File("/proc/" + android.os.Process.myPid() + "/" + "cmdline");
            BufferedReader mBufferedReader = new BufferedReader(new FileReader(file));
            String processName = mBufferedReader.readLine().trim();
            mBufferedReader.close();
            return processName;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 检查是不是Debug模式
     */
    private boolean isDebugMode() {
        return BuildConfig.APP_DEBUG;
    }

    /**
     * 根据不同的进程来初始化不同的东西
     * 比如web进程就不需要初始化推送，也不需要图片加载等等
     * <p>
     * 发新版 或 测试版也有不同的初始化
     * 比如调试工具stetho 在debug 环境是要的，Release 是不需要的
     */
    private void initApplication() {
        String processName = getProcessName();  //注意区分进程初始化不同的东西

        if (!TextUtils.isEmpty(processName) && processName.equals(this.getPackageName())) { //main Process
            JUtils.initialize(this);

            if (isDebugMode()) {
                Timber.plant(new Timber.DebugTree());
//                Stetho.initialize(Stetho
//                        .newInitializerBuilder(this)
//                        .enableDumpapp(Stetho.defaultDumperPluginsProvider(this))
//                        .enableWebKitInspector(
//                                Stetho.defaultInspectorModulesProvider(this)).build());
            }

//            refWatcher = LeakCanary.install(this);  //只管主进程的,其他的进程自保吧
        } else {
        }
    }
}
